export default {
  mounted(el, bind, vnode) {
    el.addEventListener("input", function (e) {
      let input = e.target.value;

      // 移除所有非数字、负号和小数点的字符
      input = input.replace(/[^-\d.]/g, "");

      // 确保负号只出现在字符串的开始位置
      if (
        input.charAt(0) === "-" &&
        input.length > 1 &&
        input.charAt(1) === "-"
      ) {
        input = "-" + input.slice(2); // 移除多余的负号
      }

      // 如果字符串以负号开头且后面紧跟非数字，则移除该负号（因为此时它不是一个有效的负数字）
      if (input.charAt(0) === "-" && !/^\-?\d*\.?\d*$/.test(input)) {
        input = input.slice(1);
      }

      // 如果存在小数点，则确保小数点后最多有两位数字
      if (input.includes(".")) {
        input = input.replace(/(\.\d\d).*$/, "$1"); // 只保留小数点后两位
      }

      // 如果输入为空或仅包含负号，则保持原样（或根据需要处理）

      // 更新输入框的值
      e.target.value = input;
      //   主动触发更新数据事件
      e.target.dispatchEvent(new Event("input"));
    });
  },
};
